const api = require('../../utils/api.js');
const storage = require('../../utils/storage.js');
const imageUtil = require('../../utils/image.js');

Page({
  data: {
    statusBarHeight: 0,
    navBarHeight: 0, // 导航栏总高度
    contentTop: 0, // 内容区域的顶部偏移（导航栏）
    activities: [],
    loading: false,
    isEmpty: false,
    // 默认位置：武汉（可以根据实际情况修改）
    latitude: 30.5928,
    longitude: 114.3055,
    radius: 50.0,
    // 分页相关
    activitiesPage: 1,
    activitiesPageSize: 20,
    hasMoreActivities: true,
    loadingMore: false,
    // scroll-view刷新状态
    refresherTriggered: false
  },

  onLoad() {
    console.log('📱 =============== 一起玩页面加载 ===============');
    
    // 获取系统状态栏高度
    const windowInfo = wx.getWindowInfo();
    const statusBarHeight = windowInfo.statusBarHeight;
    // 计算顶部导航栏总高度（状态栏高度 + 导航栏内容高度 88rpx）
    const navBarHeight = statusBarHeight + 44; // 88rpx ≈ 44px
    // 计算内容区域的顶部偏移（只有导航栏）
    const contentTop = navBarHeight;
    
    this.setData({
      statusBarHeight: statusBarHeight,
      navBarHeight: navBarHeight,
      contentTop: contentTop
    });
    
    // 尝试获取用户位置（实际项目中可以使用微信位置API）
    this.getUserLocation();
    
    // 加载活动列表
    this.loadActivities();
  },

  onShow() {
    // 🔔 自动初始化通知组件（由 app.js 全局处理）
    const app = getApp();
    app.autoInitNotification();
  },

  // scroll-view 下拉刷新（活动列表）
  onRefresherRefresh() {
    console.log('🔄 scroll-view下拉刷新（活动）');
    
    // 重置分页状态
    this.setData({
      activitiesPage: 1,
      hasMoreActivities: true,
      refresherTriggered: true
    });
    
    // 加载数据
    this.loadActivities(true).finally(() => {
      // 关闭刷新状态
      setTimeout(() => {
        this.setData({
          refresherTriggered: false
        });
      }, 500);
    });
  },


  // scroll-view 滚动到底部（上拉加载）
  onScrollToLower() {
    console.log('⬆️ scroll-view触发上拉加载');
    this.loadMoreActivities();
  },

  // 传统下拉刷新（保留作为备用）
  onPullDownRefresh() {
    console.log('🔄 传统下拉刷新');
    this.setData({
      activitiesPage: 1,
      hasMoreActivities: true
    });
    this.loadActivities(true);
    
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 1000);
  },

  // 传统上拉加载（保留作为备用）
  onReachBottom() {
    console.log('⬆️ 传统上拉加载');
    this.loadMoreActivities();
  },

  /**
   * 获取用户位置
   */
  getUserLocation() {
    // TODO: 实际项目中可以使用微信位置API获取用户真实位置
    // wx.getLocation({
    //   type: 'gcj02',
    //   success: (res) => {
    //     this.setData({
    //       latitude: res.latitude,
    //       longitude: res.longitude
    //     });
    //   }
    // });
    console.log('📍 使用默认位置: 武汉');
  },

  /**
   * 加载活动列表（真实API）
   * @param {Boolean} isRefresh - 是否是下拉刷新（true=刷新，false=首次加载）
   * @returns {Promise}
   */
  loadActivities(isRefresh = false) {
    console.log('🎯 =============== 加载活动列表 ===============');
    console.log('📄 当前页:', this.data.activitiesPage);
    console.log('🔄 是否刷新:', isRefresh);
    
    this.setData({ loading: true, isEmpty: false });

    // 调用真实API并返回Promise
    return api.getNearbyActivities(
      this.data.latitude,
      this.data.longitude,
      this.data.radius,
      this.data.activitiesPageSize
    ).then(response => {
      console.log('✅ 活动数据加载成功');
      console.log('📊 数据:', response.data);

      // 转换API数据为UI格式
      const newActivities = this.formatActivitiesData(response.data || []);
      
      // 判断是否还有更多数据
      const hasMore = newActivities.length >= this.data.activitiesPageSize;
      
      this.setData({
        activities: newActivities,
        loading: false,
        isEmpty: newActivities.length === 0,
        hasMoreActivities: hasMore
      });

      console.log('📝 格式化后的活动数量:', newActivities.length);
      console.log('📄 是否还有更多:', hasMore);
      
      return response;
    }).catch(error => {
      console.error('❌ 活动数据加载失败:', error);
      
      this.setData({
        loading: false,
        isEmpty: true
      });

      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none',
        duration: 2000
      });
      
      throw error;
    });
  },

  /**
   * 加载更多活动（上拉加载）
   */
  loadMoreActivities() {
    console.log('📥 =============== 加载更多活动 ===============');
    
    // 如果正在加载或没有更多数据，直接返回
    if (this.data.loadingMore || !this.data.hasMoreActivities) {
      console.log('⚠️ 正在加载或没有更多数据');
      if (!this.data.hasMoreActivities) {
        wx.showToast({
          title: '没有更多了',
          icon: 'none',
          duration: 1500
        });
      }
      return;
    }

    // 设置加载状态
    this.setData({ 
      loadingMore: true,
      activitiesPage: this.data.activitiesPage + 1
    });

    console.log('📄 加载第', this.data.activitiesPage, '页');

    // 调用真实API
    api.getNearbyActivities(
      this.data.latitude,
      this.data.longitude,
      this.data.radius,
      this.data.activitiesPageSize
    ).then(response => {
      console.log('✅ 更多活动数据加载成功');
      
      // 转换API数据为UI格式
      const newActivities = this.formatActivitiesData(response.data || []);
      
      // 合并到现有数据
      const allActivities = [...this.data.activities, ...newActivities];
      
      // 判断是否还有更多数据
      const hasMore = newActivities.length >= this.data.activitiesPageSize;
      
      this.setData({
        activities: allActivities,
        loadingMore: false,
        hasMoreActivities: hasMore
      });

      console.log('📝 新增活动数量:', newActivities.length);
      console.log('📝 总活动数量:', allActivities.length);
      console.log('📄 是否还有更多:', hasMore);

      // 如果没有更多数据，提示用户
      if (!hasMore) {
        wx.showToast({
          title: '没有更多了',
          icon: 'none',
          duration: 1500
        });
      }
    }).catch(error => {
      console.error('❌ 加载更多失败:', error);
      
      // 失败时回退页码
      this.setData({
        loadingMore: false,
        activitiesPage: this.data.activitiesPage - 1
      });

      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none',
        duration: 2000
      });
    });
  },


  /**
   * 格式化活动数据（将API数据转换为UI格式）
   * @param {Array} apiData - API返回的活动数据
   * @param {String} forceStatus - 强制设置活动状态（可选），用于修正后端数据不准确的情况
   */
  formatActivitiesData(apiData, forceStatus = null) {
    console.log('🔄 格式化活动数据，数量:', apiData.length);
    if (forceStatus) {
      console.log('🔧 强制设置状态为:', forceStatus);
    }
    
    return apiData.map(item => {
      // 获取活动类型（用于显示标签）
      const activityType = Array.isArray(item.activityType) && item.activityType.length > 0
        ? item.activityType[0]
        : '双方商议';

      // 根据活动类型确定标签颜色
      let tagColor = 'red';
      if (activityType === 'AA') {
        tagColor = 'orange';
      } else if (activityType === '我买单') {
        tagColor = 'green';
      }

      // 🔥 使用图片工具类处理封面图和头像（自动HTTP转HTTPS，真机要求）
      const cover = Array.isArray(item.activityImages) && item.activityImages.length > 0
        ? imageUtil.toHttps(item.activityImages[0], 'https://via.placeholder.com/300x200/4CAF50/FFFFFF?text=Activity')
        : 'https://via.placeholder.com/300x200/4CAF50/FFFFFF?text=Activity';
      const authorAvatar = imageUtil.processAvatar(item.publisherAvatar);

      // 🔥 获取活动状态信息（如果有强制状态，优先使用强制状态）
      let activityStatus;
      if (forceStatus) {
        // 使用强制状态（修正后端数据不准确的问题）
        activityStatus = forceStatus;
      } else {
        // 从后端数据读取状态
        activityStatus = Array.isArray(item.activityStatus) && item.activityStatus.length > 0
          ? item.activityStatus[0]
          : '未知';
      }
      const statusMessage = item.activityStatusMessage || activityStatus;

      // 🔥 根据状态确定状态标签样式
      let statusColor = 'gray';
      if (activityStatus === '进行中') {
        statusColor = 'green';
      } else if (activityStatus === '已结束') {
        statusColor = 'gray';
      } else if (activityStatus === '已取消') {
        statusColor = 'red';
      }

      return {
        id: item.activityId,
        title: item.activityTitle || '活动标题',
        description: item.activityDetails || '暂无描述',
        cover: cover,
        tag: activityType,
        tagColor: tagColor,
        author: item.publisherNickname || '未知用户',
        authorAvatar: authorAvatar,
        participants: item.activityCurrentParticipants || 0,
        maxParticipants: item.activityMaxParticipants || 10,
        location: item.activityLocation || '',
        // 🔥 活动状态信息
        activityStatus: activityStatus,
        statusMessage: statusMessage,
        statusColor: statusColor,
        // 保存原始数据，用于详情页
        rawData: item
      };
    });
  },

  /**
   * 🖼️ 图片加载失败处理
   */
  onImageError(e) {
    const id = e.currentTarget.dataset.id;
    
    console.warn('⚠️ 活动图片加载失败, 活动ID:', id);
    
    // 🔥 使用图片工具类获取占位图
    const placeholderImage = imageUtil.getPlaceholderImage();
    
    // 更新对应活动的封面图
    const activities = this.data.activities;
    const activityIndex = activities.findIndex(item => item.id === id);
    if (activityIndex !== -1) {
      this.setData({
        [`activities[${activityIndex}].cover`]: placeholderImage
      });
    }
  },

  /**
   * 查看活动详情（跳转到详情页）
   */
  viewActivity(e) {
    const id = e.currentTarget.dataset.id;
    console.log('👁️ 查看活动详情, ID:', id);
    
    // 🔥 跳转到活动详情页（使用 id 参数，与 activity-detail 页面保持一致）
    wx.navigateTo({
      url: `/pages/activity-detail/index?id=${id}`
    });
  }
});

